﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebShop.Classes
{
    /// <summary>
    /// Translater singletone
    /// </summary>
    public static class Translater
    {
        /// <summary>
        /// Translate dictionary
        /// </summary>
        private static Dictionary<string, string> dictionary;

        static Translater()
        {
            dictionary = new Dictionary<string, string>();

            dictionary.Add("account_eng", "Account");
            dictionary.Add("account_rus", "Профиль");

            dictionary.Add("language_eng", "Language");
            dictionary.Add("language_rus", "Язык");

            dictionary.Add(@"price_{0}_eng", @"Price {0:00} grn.");
            dictionary.Add(@"price_{0}_rus", @"Стоит {0:00} грн.");

            dictionary.Add("checkout_eng", "To cart");
            dictionary.Add("checkout_rus", "В корзину");

            dictionary.Add("gallery_eng", "Gallery");
            dictionary.Add("gallery_rus", "Галерея");

            dictionary.Add("about_eng", "About");
            dictionary.Add("about_rus", "Описание");

            dictionary.Add("filters_eng", "Filters");
            dictionary.Add("filters_rus", "Фильтры");
            
            dictionary.Add("by_price_eng", "By price");
            dictionary.Add("by_price_rus", "По цене");

            dictionary.Add("max_price_eng", "Max price");
            dictionary.Add("max_price_rus", "Верхняя");

            dictionary.Add("min_price_eng", "Min price");
            dictionary.Add("min_price_rus", "Нижнее");

            dictionary.Add("product_index_eng", "#");
            dictionary.Add("product_index_rus", "#");

            dictionary.Add("product_name_eng", "Product name");
            dictionary.Add("product_name_rus", "Название");

            dictionary.Add("price_eng", "Price (grn.)");
            dictionary.Add("price_rus", "Цена (грн.)");

            dictionary.Add("submit_eng", "Submit");
            dictionary.Add("submit_rus", "Отправить");

            dictionary.Add("priceAsc_eng", "Price Asc");
            dictionary.Add("priceAsc_rus", "Цена, возрастание");

            dictionary.Add("priceDesc_eng", "Price Desc");
            dictionary.Add("priceDesc_rus", "Цена, убывание");

            dictionary.Add("nameAsc_eng", "Name Asc");
            dictionary.Add("nameAsc_rus", "Название, по алфавиту");

            dictionary.Add("nameDesc_eng", "Name Desc");
            dictionary.Add("nameDesc_rus", "Название, обратно алфавиту");

            dictionary.Add("back_to_category_eng", "Back to category");
            dictionary.Add("back_to_category_rus", "Назад, к категории");

            dictionary.Add("login_eng", "Registration/Login");
            dictionary.Add("login_rus", "Вход");

            dictionary.Add("registration_form_eng", "Registration form");
            dictionary.Add("registration_form_rus", "Регистрация");

            dictionary.Add("login_form_eng", "Login");
            dictionary.Add("login_form_rus", "Вход");

            dictionary.Add("login_field_eng", "Login");
            dictionary.Add("login_field_rus", "Пользователь");

            dictionary.Add("password_field_eng", "Password");
            dictionary.Add("password_field_rus", "Пароль");

            dictionary.Add("phone_field_eng", "Phone");
            dictionary.Add("phone_field_rus", "Телефон");

            dictionary.Add("email_field_eng", "E-mail");
            dictionary.Add("email_field_rus", "E-mail");

            dictionary.Add("fio_field_eng", "Person name");
            dictionary.Add("fio_field_rus", "ФИО");

            dictionary.Add("profile_eng", "Profile");
            dictionary.Add("profile_rus", "Мои данные");

            dictionary.Add("logout_eng", "Logout");
            dictionary.Add("logout_rus", "Выход");

            dictionary.Add("profile_form_eng", "Profile edit");
            dictionary.Add("profile_form_rus", "Редактирование профиля");

            //
            dictionary.Add("title_index_eng", "{ShopБуло}");
            dictionary.Add("title_index_rus", "{ShopБуло}");

            dictionary.Add("title_category_{0}_eng", "{0}");
            dictionary.Add("title_category_{0}_rus", "{0}");

            dictionary.Add("title_product_{0}_eng", "{0}");
            dictionary.Add("title_product_{0}_rus", "{0}");

            dictionary.Add("title_auth_eng", "Registration/Login");
            dictionary.Add("title_auth_rus", "Вход");

            dictionary.Add("title_profile_eng", "Profile");
            dictionary.Add("title_profile_rus", "Редактирование профиля");

            dictionary.Add("title_cart_eng", "Cart");
            dictionary.Add("title_cart_rus", "Моя корзина");

            dictionary.Add("cart_eng", "My cart");
            dictionary.Add("cart_rus", "Моя корзина");

            dictionary.Add("count_eng", "Count");
            dictionary.Add("count_rus", "Количество");

            dictionary.Add("add_item_cart_eng", "One more");
            dictionary.Add("add_item_cart_rus", "Еще один");

            dictionary.Add("drop_item_cart_eng", "One less");
            dictionary.Add("drop_item_cart_rus", "Меньше");

            dictionary.Add("totaly_eng", "Totlal price");
            dictionary.Add("totaly_rus", "Общая сумма");

            dictionary.Add("you_need_login_eng", "You need login before can accept cart");
            dictionary.Add("you_need_login_rus", "Необходимо войти в систему для оформления покупки");

            dictionary.Add("accept_cart_eng", "Checkout");
            dictionary.Add("accept_cart_rus", "Оформить заказ");

            dictionary.Add("place_eng", "Place");
            dictionary.Add("place_rus", "Заберу в ");

            dictionary.Add("history_eng", "History");
            dictionary.Add("history_rus", "История заказов");

            dictionary.Add("title_history_eng", "History");
            dictionary.Add("title_history_rus", "История заказов");

            dictionary.Add("title_history_item_eng", "Order show");
            dictionary.Add("title_history_item_rus", "Просмотр заказа");

            dictionary.Add("order_date_eng", "Date");
            dictionary.Add("order_date_rus", "Дата");

            dictionary.Add("order_index_eng", "");
            dictionary.Add("order_index_rus", "");

            dictionary.Add("order_price_eng", "Price (grn.)");
            dictionary.Add("order_price_rus", "Цена (грн.)");

            dictionary.Add("order_status_eng", "Status");
            dictionary.Add("order_status_rus", "Состояние");

            dictionary.Add("order_status_1_eng", "Created");
            dictionary.Add("order_status_1_rus", "В очереди");

            dictionary.Add("order_status_2_eng", "Worked");
            dictionary.Add("order_status_2_rus", "Взят в обработку");

            dictionary.Add("order_status_3_eng", "Canceled");
            dictionary.Add("order_status_3_rus", "Отменен");

            dictionary.Add("order_status_4_eng", "Closed");
            dictionary.Add("order_status_4_rus", "Успешно завершен");

            //
            dictionary.Add("login_auth_error_eng", "Incorrect auth data");
            dictionary.Add("login_auth_error_rus", "Нет пользователя с указанными именем и паролем");

            dictionary.Add("login_incorrect_data_eng", "Login or password cant be empty!");
            dictionary.Add("login_incorrect_data_rus", "Логин или пароль на могут быть пустыми!");

            dictionary.Add("not_all_req_fields_eng", "Not all required fields entered!");
            dictionary.Add("not_all_req_fields_rus", "Заполнены не все обязательные поля!");

            dictionary.Add("login_auth_success_eng", "Hello, {0} !");
            dictionary.Add("login_auth_success_rus", "С возвращением, {0}!");   

            dictionary.Add("registration_error_eng", "Registration error. Try later !");
            dictionary.Add("registration_error_rus", "Данные некорректны или пользователь с такими данными уже существует!");   

            dictionary.Add("registration_success_eng", "Registration success");
            dictionary.Add("registration_success_rus", "Поздравляем с регистрацией!");

            dictionary.Add("item_{0}_x_{1}_add_success_eng", "Item {0} x{1} added to cart!");
            dictionary.Add("item_{0}_x_{1}_add_success_rus", "Товар {0} x{1} добавлен в корзину");

            dictionary.Add("item_{0}_x_{1}_drop_success_eng", "Item {0} x{1} dporred to cart!");
            dictionary.Add("item_{0}_x_{1}_drop_success_rus", "Товар {0} x{1} удален из корзины");

            dictionary.Add("profile_edit_error_eng", "Error in profile update!");
            dictionary.Add("profile_edit_error_rus", "При обновлении профиля возникла ошибка");  

            dictionary.Add("profile_edit_success_eng", "Profile updated!");
            dictionary.Add("profile_edit_success_rus", "Профиль обновлен!");

            dictionary.Add("orders_history_eng", "Orders history");
            dictionary.Add("orders_history_rus", "История заказов");

            dictionary.Add("main_page_eng", "Main page");
            dictionary.Add("main_page_rus", "Главная страница");

            dictionary.Add("email_no_valid_fields_eng", "Email no valid");
            dictionary.Add("email_no_valid_fields_rus", "Адрес электронной почты некоректен");
        }

        /// <summary>
        /// Return translate by token
        /// </summary>
        /// <param name="token">Token</param>
        /// <returns>Translate or token if there is no translate</returns>
        public static string Translate(string token)
        {
            string language = ConfigStorage.Language;
            string result = token + "_" + language;

            if (dictionary.ContainsKey(result))
            {
                result = dictionary[result];
            }

            return result;
        }

       
    }
}